/**
 * Setting for the Ajax request - Error Handlers
 */

$.ajaxSetup({
	timeout : 100000,
	/*statusCode : {
		901 : ajaxSessionTimeout,
		404 : ajaxPageNotFound,
		405 : ajaxForbiddenMethod,
		408	: ajaxTimeout,
		444 : ajaxNoResponse,
		500 : ajaxInternalError
	}*/
});


$(document).ajaxStart(function(){
		showAjaxMessage("cargando...");
	});
	
$(document).ajaxComplete(function(event, XMLHttpRequest, ajaxOptions){
		if(XMLHttpRequest.status == 200){
			hideAjaxMessage();
		}
	});
	
$(document).ajaxError(function(event,xhr,opt,exc){
		switch (xhr.status) {
		case 403:
			ajaxForbiddenMethod(opt);
			break;
		case 404:
			ajaxPageNotFound(opt);
			break;
		case 408:
			ajaxTimeout(opt);
			break;
		case 444:
			ajaxNoResponse(opt);
			break;
		case 500:
			ajaxInternalError(opt);
			break;
		case 901:
			ajaxSessionTimeout(opt);
			break;
		default:
			ajaxGenericError(opt);
			break;
		}
});

function ajaxSessionTimeout(opt) {
	showAjaxMessage("Su sesión ha terminado.");
}
function ajaxPageNotFound(opt) {
	showAjaxMessage("Página no encontrada");
}
function ajaxInternalError(opt) {
	showAjaxMessage("Hubo un error en el servidor");
}
function ajaxNoResponse(opt){
	showAjaxMessage("No hay respuesta desde el servidor");
}
function ajaxTimeout(opt){
	showAjaxMessage("Tiempo de respuesta excedido");
}
function ajaxForbiddenMethod(opt) {
	showAjaxMessage("No tiene los permisos para acceder a: "+opt.url);
}
function ajaxGenericError(opt){
	showAjaxMessage("Ocurrió un error en el servidor");
}
function showAjaxMessage(message){
	$('#ajax-status-container').show();
	$('#ajax-status').html(message);
	$('#ajax-status-container').css({'opacity':'1'});
}
function hideAjaxMessage(){
	$('#ajax-status-container').animate({
		opacity:0
	},1000,function(){
		$('#ajax-status').html("");
	});
}